我一直试图在越线时计算汽车并且它可以工作,但问题是它多次计算一辆车是荒谬的,因为它应该被计算一次
这是我正在使用的代码:
import cv2
import numpy as np
bgsMOG = cv2.BackgroundSubtractorMOG()
cap = cv2.VideoCapture("traffic.avi")
counter = 0
if cap:
while True:
ret, frame = cap.read()
if ret:
fgmask = bgsMOG.apply(frame, None, 0.01)
cv2.line(frame,(0,60),(160,60),(255,255,0),1)
# To find the countours of the Cars
contours, hierarchy = cv2.findContours(fgmask,
cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
try:
hierarchy = hierarchy[0]
except:
hierarchy = []
for contour, hier in zip(contours, hierarchy):
(x, y, w, h) = cv2.boundingRect(contour)
if w > 20 and h > 20:
cv2.rectangle(frame, (x,y), (x+w,y+h), (255, 0, 0), …Run Code Online (Sandbox Code Playgroud) 我最近对一个奇怪的想法感到震惊,即从/ dev/urandom获取输入,将相关字符转换为随机整数,并使用这些整数作为像素的rgb/xy值绘制到屏幕上.
我做了一些研究(这里是关于StackOverflow和其他地方),许多人建议您可以直接写入/ dev/fb0,因为它是设备的文件表示.不幸的是,这似乎没有产生任何视觉上明显的结果.
我发现了一个示例C程序来自QT教程(不再可用),它使用mmap写入缓冲区.程序成功运行,但同样没有输出到屏幕.有趣的是,当我将我的笔记本电脑放入Suspend并稍后恢复时,我看到了一个瞬间闪现的图像(一个红色正方形),它被更早地写入帧缓冲区.写入帧缓冲区是否在Linux中用于绘制屏幕?理想情况下,我想写一个(ba)sh脚本,但C或类似的也可以.谢谢!
编辑:这是示例程序...兽医可能看起来很熟悉.
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
int main()
{
int fbfd = 0;
struct fb_var_screeninfo vinfo;
struct fb_fix_screeninfo finfo;
long int screensize = 0;
char *fbp = 0;
int x = 0, y = 0;
long int location = 0;
// Open the file for reading and writing
fbfd = open("/dev/fb0", O_RDWR);
if (fbfd == -1) {
perror("Error: cannot open framebuffer device");
exit(1);
}
printf("The framebuffer …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
imgs = glob.glob('/home/chipin/heart/tray.png')
current_img = io.imread(imgs[0])
cv2.imwrite('/home/chipin/heart/01.png', current_img[0:511,0:511])
Run Code Online (Sandbox Code Playgroud)
图片尺寸为512*512,保存后蓝色图片变黄.似乎放弃了一个频道.我真的不知道为什么.
这是current_img的值:
尝试提高图像亮度时遇到问题.
这是原始图像:
我想要的图像是这样的:
现在使用以下代码增加亮度:
image = cv2.imread("/home/wni/vbshare/tmp/a4_index2.png",0)
if sum(image[0])/len(image[0])<200:
new = np.where((255-image)<image,255,image*2)
else:
new = image
return new
Run Code Online (Sandbox Code Playgroud)
而且,我得到了以下图像:
所以,似乎某些点的亮度溢出.
我试图将阈值从200更改为其他数字,例如125,100,140等.但是,图像亮度几乎保持相同的暗或溢出.
ENV:
Python:2.7.10
Opencv:3.2.0
对此有任何建议表示赞赏.
谢谢.
扫描文档后,我正在使用OpenCV库应用图像处理.我没有像Scannable iOS应用程序那样获得扫描文档的质量.
我使用下面的代码进行图像处理:
- (UIImage *)applyImageProcessing:(UIImage *)aImage
{
cv::Mat originalMat = [self cvMatFromUIImage:aImage];
cv::Mat dest_mat(aImage.size.width, aImage.size.height, CV_8UC4);
cv::Mat intermediate_mat(aImage.size.width, aImage.size.height, CV_8UC4);
cv::multiply(originalMat, 0.5, intermediate_mat);
cv::add(originalMat, intermediate_mat, dest_mat);
return [self UIImageFromCVMat:dest_mat];
}
- (cv::Mat)cvMatFromUIImage:(UIImage*)image
{
CGColorSpaceRef colorSpace = CGImageGetColorSpace(image.CGImage);
CGFloat cols = image.size.width;
CGFloat rows = image.size.height;
cv::Mat cvMat(rows, cols, CV_8UC4); // 8 bits per component, 4 channels (color channels + alpha)
CGContextRef contextRef = CGBitmapContextCreate(cvMat.data, // Pointer to data
cols, // Width of bitmap
rows, // Height of bitmap
8, …Run Code Online (Sandbox Code Playgroud) 我在OpenCV android 2.4.11的例子下工作,它使用相机检测面部.我没有在找到的脸上画一个矩形,而是试图在脸上放一个面具(png图像).但是为了在脸上显示图像,png图像带有透明度的黑色背景.
FdActivity.java
public void onCameraViewStarted(int width, int height) {
mGray = new Mat();
mRgba = new Mat();
//Load my mask png
Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.mask_1);
mask = new Mat();
Utils.bitmapToMat(image, mask);
}
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
mRgba = inputFrame.rgba();
mGray = inputFrame.gray();
if (mAbsoluteFaceSize == 0) {
int height = mGray.rows();
if (Math.round(height * mRelativeFaceSize) > 0) {
mAbsoluteFaceSize = Math.round(height * mRelativeFaceSize);
}
mNativeDetector.setMinFaceSize(mAbsoluteFaceSize);
}
MatOfRect faces = new MatOfRect();
if (mDetectorType == JAVA_DETECTOR) { …Run Code Online (Sandbox Code Playgroud) 我在'tags'字段上实现了一个提升; 但是它没有以适当的方式对我的结果进行排名.
我的search_indexes.py:
class ParagraphIndex(indexes.SearchIndex, indexes.Indexable):
text= indexes.CharField(document=True, use_template=True, boost=1.0)
tags= indexes.MultiValueField(boost=2.5)
def prepare_tags(self,object):
return [tag.tag for tag in object.tags.all()]
Run Code Online (Sandbox Code Playgroud)
我的常规搜索适用于正确的字段.我已经多次运行update_index并仍然得到相同的答案.任何帮助都感激不尽.如果需要更多信息,请告诉我!
我使用以下代码检测面部并在面部绘制矩形.
while True:
# get video frame
ret, img = cap.read()
input_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img_h, img_w, _ = np.shape(input_img)
detected = detector(input_img, 1)
for i, d in enumerate(detected):
x1, y1, x2, y2, w, h = d.left(), d.top(), d.right() + 1, d.bottom() + 1, d.width(), d.height()
cv2.rectangle(img, (x1, y1), (x2, y2), (255, 0, 0), 2)
cv2.imshow("result", img)
key = cv2.waitKey(30)
if key == 27:
break
Run Code Online (Sandbox Code Playgroud)
矩形看起来像这样:
但是我试图得到一个类似于这个的矩形:
是否有任何OpenCV或dlib函数可以帮助我获得这种有效的矩形?
我已经安装了 opencv-python-4.7.0.68 和 opencv-contrib-python-4.7.0.68
下面的代码给我以下错误:
AttributeError: module 'cv2.aruco' has no attribute 'CharucoBoard_create'
示例代码:
import cv2
aruco_dict = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_4X4_50)
board = cv2.aruco.CharucoBoard_create(11, 8, 0.015, 0.011, aruco_dict)
Run Code Online (Sandbox Code Playgroud)