4. Open Source CV image beautification 4.1. OpenCV repair image 4.2. OpenCV image brightness enhancement 4.3. OpenCV image microdermabrasion and whitening
Parameter meaning:
src: source image, which is the image that needs to be repaired
inpaintMask: Binary mask indicating the pixels to be inpainted.
dst: result image
inpaintRadius: Indicates the radius of the repair
flags : Repair algorithm, mainly INPAINT_NS (Navier-Stokes based method) or INPAINT_TELEA (Fast marching based method)
Navier-Stokes based fixes should be slower and tend to produce more ambiguous results than fast marching methods. In practice, we have not found this to be the case. INPAINT_NS produced better results in our tests and was also slightly faster than INPAINT_TELEA.
(1) First, we first add damage to the intact picture, which can be understood as modifying the pixel value of a specific part of it
run the program
xpython ~/yahboomcar_ws/src/yahboomcar_astra/scripts/opencv/4_1_1.py
ximport cv2import numpy as npif __name__ == '__main__':img = cv2.imread('yahboom.jpg')for i in range(50,100):img[i,50] = (0,0,0)img[i,50+1] = (0,0,0)img[i,50-1] = (0,0,0)for i in range(100,150):img[150,i] = (0,0,0)img[150,i+1] = (0,0,0)img[150-1,i] = (0,0,0)cv2.imwrite("damaged.jpg",img)dam_img = cv2.imread('damaged.jpg')while True :cv2.imshow("dam_img",dam_img)action = cv2.waitKey(10) & 0xFFif action == ord('q') or action == 113:breakimg.release()cv2.destroyAllWindows()
After running, a picture will be generated, which is regarded as a damaged picture of the original picture.

(2) repair the photo you just created, first read, then create the mask, and finally use the function to repair it
run the program
xxxxxxxxxxpython ~/yahboomcar_ws/src/yahboomcar_astra/scripts/opencv/4_1_2.py
ximport cv2import numpy as npif __name__ == '__main__':dam_img = cv2.imread('damaged.jpg')imgInfo = dam_img.shapeheight = imgInfo[0]width = imgInfo[1]paint = np.zeros((height,width,1),np.uint8)for i in range(50,100):paint[i,50] = 255paint[i,50+1] = 255paint[i,50-1] = 255for i in range(100,150):paint[150,i] = 255paint[150+1,i] = 255paint[150-1,i] = 255dst_img = cv2.inpaint(dam_img,paint,3,cv2.INPAINT_TELEA)while True :cv2.imshow("dam_img",dam_img)cv2.imshow("paint",paint)cv2.imshow("dst",dst_img)action = cv2.waitKey(10) & 0xFFif action == ord('q') or action == 113:breakimg.release()cv2.destroyAllWindows()

As shown in the figure, the left is before repair, the middle is the mask image, and the right is the original image after repair.
run the program
xxxxxxxxxxpython ~/yahboomcar_ws/src/yahboomcar_astra/scripts/opencv/4_2.py
ximport cv2import numpy as npif __name__ == '__main__':img = cv2.imread('yahboom.jpg')imgInfo = img.shapeheight = imgInfo[0]width = imgInfo[1]dst = np.zeros((height,width,3),np.uint8)for i in range(0,height):for j in range(0,width):(b,g,r) = img[i,j]bb = int(b) + 100gg = int(g) + 100rr = int(r) + 100if bb > 255:bb = 255if gg > 255:gg = 255if rr > 255:rr = 255dst[i,j] = (bb,gg,rr)while True :cv2.imshow("dst",dst)action = cv2.waitKey(10) & 0xFFif action == ord('q') or action == 113:breakimg.release()cv2.destroyAllWindows()

The picture on the left is the original picture, and the picture on the back is the photo after increasing the brightness.
run the program
xxxxxxxxxxpython ~/yahboomcar_ws/src/yahboomcar_astra/scripts/opencv/4_3.py
ximport cv2import numpy as npif __name__ == '__main__':img = cv2.imread('yahboom.jpg')imgInfo = img.shapeheight = imgInfo[0]width = imgInfo[1]dst = np.zeros((height,width,3),np.uint8)for i in range(0,height):for j in range(0,width):(b,g,r) = img[i,j]bb = int(b*1.4) + 5gg = int(g*1.4) + 5if bb > 255:bb = 255if gg > 255:gg = 255dst[i,j] = (bb,gg,r)while True :cv2.imshow("origin",img)cv2.imshow("dst",dst)action = cv2.waitKey(10) & 0xFFif action == ord('q') or action == 113:breakimg.release()cv2.destroyAllWindows()
